/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package br.ufpr.tads.Rent.view;

import br.ufpr.tads.Rent.controller.EnumClass.*;
import br.ufpr.tads.Rent.model.VeiculoDTO;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author NI LINDA
 */

public class ModeloTabelaVeiculo extends AbstractTableModel{
    private String[] colunas=new String[]{"id","Marca", "Categoria", "Ano","Modelo","Placa","Tipo","Estado","Valor"};

    private List<VeiculoDTO> lista=new ArrayList();
    
    @Override
    public int getRowCount() {
        return this.lista.size();
    }

    @Override
    public int getColumnCount() {
        return this.colunas.length;
    }

    @Override
    public String getColumnName(int index) {
        return this.colunas[index];
    }

    @Override
    public boolean isCellEditable(int row, int column) {
        return false;
        //if(column==0)
            //return false;
        //return true;
    }

    
    public void ModeloTabelaVeiculos(List<VeiculoDTO> lista){
        this.lista=lista;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        VeiculoDTO vei = lista.get(rowIndex);
        switch (columnIndex) {
            case 0: return vei.getId();
            case 1: return vei.getMarca();
            case 2: return vei.getCategoria();
            case 3: return vei.getAno();
            case 4: if(vei.getTipo().getKey()==0){
                        return ModeloAutomovel.values()[vei.getModelo()];
                    }else if(vei.getTipo().getKey()==1){
                        return modelomotocicleta.values()[vei.getModelo()];
                    }else{
                        return modelovan.values()[vei.getModelo()].getNome();
                    }
                
                
            case 5: return vei.getPlaca();
            case 6: return vei.getTipo();
            case 7: return estado.values()[vei.getEstado()];
            case 8: return vei.getValorCompra();
            default : return null;
        }
        
       
        
    }


    public void setListaVeiculos(List<VeiculoDTO> lista) {
        this.lista=lista;
        this.fireTableDataChanged();
    }

    public void limpaTabela() {
        int indice = lista.size()-1;
        if(indice<0)
            indice=0;
        this.lista = new ArrayList();
        this.fireTableRowsDeleted(0,indice);//update JTable
    }

    public VeiculoDTO getVeiculo(int linha){
        return lista.get(linha);
    }
    
}
